package com.gzs.learn.admin.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzs.learn.admin.common.utils.DateUtils;
import com.gzs.learn.admin.mapper.DbConfigMapper;
import com.gzs.learn.admin.model.po.DbConfig;
import com.gzs.learn.admin.service.IDbConfigService;
import com.gzs.learn.admin.util.PageUtil;
import com.gzs.learn.inf.PageResponseDto;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * 数据源配置Service业务层处理
 *
 * @author guanzhisong
 * @date 2021-08-12
 */
@Service
@RequiredArgsConstructor
public class DbConfigServiceImpl implements IDbConfigService {

    private final DbConfigMapper dbConfigMapper;

    /**
     * 查询数据源配置
     *
     * @param id 数据源配置ID
     * @return 数据源配置
     */
    @Override
    public DbConfig selectDbConfigById(Long id) {
        return dbConfigMapper.selectDbConfigById(id);
    }

    /**
     * 查询数据源配置列表
     *
     * @param dbConfig 数据源配置
     * @return 数据源配置
     */
    @Override
    public PageResponseDto<DbConfig> selectDbConfigList(DbConfig dbConfig) {
        Page<?> page = PageUtil.getPage();
        IPage<DbConfig> pageInfo = dbConfigMapper.selectDbConfigList(page, dbConfig);
        return PageUtil.buildPageResponse(pageInfo);
    }

    /**
     * 导出数据源配置列表
     *
     * @param dbConfig 数据源配置
     * @return 数据源配置
     */
    @Override
    public PageResponseDto<DbConfig> exportDbConfigList(DbConfig dbConfig) {
        Page<?> page = PageUtil.getMaxPageParam();
        IPage<DbConfig> pageInfo = dbConfigMapper.selectDbConfigList(page, dbConfig);
        return PageUtil.buildPageResponse(pageInfo);
    }

    /**
     * 新增数据源配置
     *
     * @param dbConfig 数据源配置
     * @return 结果
     */
    @Override
    public int insertDbConfig(DbConfig dbConfig) {
        dbConfig.setCreateTime(DateUtils.getNowDate());
        return dbConfigMapper.insertDbConfig(dbConfig);
    }

    /**
     * 修改数据源配置
     *
     * @param dbConfig 数据源配置
     * @return 结果
     */
    @Override
    public int updateDbConfig(DbConfig dbConfig) {
        return dbConfigMapper.updateById(dbConfig);
    }

    @Override
    public int changeStatus(Long id, Integer status) {
        DbConfig dbConfig = new DbConfig();
        dbConfig.setId(id);
        dbConfig.setStatus(status);
        return dbConfigMapper.updateById(dbConfig);
    }

    /**
     * 批量删除数据源配置
     *
     * @param ids 需要删除的数据源配置ID
     * @return 结果
     */
    @Override
    public int deleteDbConfigByIds(Long[] ids) {
        return dbConfigMapper.deleteDbConfigByIds(ids);
    }

    /**
     * 删除数据源配置信息
     *
     * @param id 数据源配置ID
     * @return 结果
     */
    @Override
    public int deleteDbConfigById(Long id) {
        return dbConfigMapper.deleteById(id);
    }
}
